Here are some Swing links that you might have missed during this week:

  • This subject seems to come up every now and then over the last couple of years. Supporting CSS in Swing has been mentioned in Ben Galbraith‘s presentation at last year’s JavaOne, Eitan Suez‘s JMatter has a CSS module in it, and the naming conventions for styles in Nimbus is very similar in concept to CSS. Now, there is a new project on SourceForge led by Angelo Zerr and Jawher Moussa that aims to provide a toolkit for declaratively building UIs. The Tk-UI project has, among the rest, an engine for applying CSS styles on Swing and SWT components.
  • Danno Ferrin has published the Groovy Twitter client from his JavaOne session. The entry has a link to the WebStart demo and the sources. The application itself uses the Nimbus look-and-feel if it is available.
  • A new section has been added to the release notes of the new plugin in JDK 6u10. It describes the functionality of dragging the applets to the desktop. Unlike the existing lifecycle methods defined in the Applet and JApplet methods, the relevant APIs are not APIs at all. So, pay very close attention to how you name your methods, because the compiler and the IDE won’t help you.
  • Dmitry Bondarenko has written an official guide to the translucent and shaped windows in 6u10.  Not much in the way of new information for those readers that saw my earlier introduction entry in February, the follow up on soft clipping and per-pixel translucency entry in March, and the java.net article on more advanced UI tricks. However, having the official Sun documentation gives a more prominent status to this functionality, raising the predictable question from Eric Burke – is it, or is it not a new official API?
  • Alex Ruiz points to the new NetBeans plugin written by Geertjan Wielenga. This plugin wraps the FEST-Swing UI testing framework and allows easy creation of UI tests from within NetBeans.
  • Christopher Deckers has announced the new release 0.9.5 of DJ Native Swing project that aims to provide integration of native components, such as web browser, Flash player, multimedia player and HTML editor into Swing applications.
  • Finally, Jonathan Schwartz lays out his plans for JavaFX. This is the first (at least in my memory) time that he is talking explicitly about Java on client.

Here are some Swing links that you might have missed during this week:

  • Christophe Le Besnerais has a custom implementation of Paint interface to paint a glossy button with arc-shaped gradient. Paint is one of the more advanced concepts in Java2D and it’s tricky to create a performant implementation. The only visual thing that is missing for here in the whole “web 2.0” concept is the soft-clipping along the arc itself (especially visible if you change the value of the third slider that controls the color of the top part. Chris Campbell has written about this problem before, and his solution involves an intermediate image.
  • Roman Kennke posts an update on progress of Caciocavallo project that aims to create an AWT implementation for X Window System without using any of Sun’s internal classes.
  • Jacek Furmankiewicz continues working on the SwingBuilder project, adding more support for bindings, long running tasks and integration with Commons Validation.
  • Hans Muller‘s swan song has been sent to the users mailing list of AppFramework (reference implementation of JSR 296). I have already mentioned that this project has been effectively dead for the last six months, and Hans has quite a long list of to-do things in his posting. This project has been heavily promoted throughout the entire desktop track at JavaOne this week, and even though Amy Fowler assures that it will continue to be developed, it would be wise to wait and see if the words are backed by @Actions :)
  • Geertjan Wielenga writes about using Maxim Zakharenkov‘s SwingExplorer inside a NetBeans module.

And some stray thoughts on JavaOne:

  • Underpromise and overdeliver. Good example – the playback video support for JavaFX and Java. Bad example – javafx.com.
  • I wonder why the video support hasn’t been featured more prominently during the keynote (instead of the frozen single-threaded demos). This is a very significant step forward for client Java, much more so than glitzier eye-candy dragging applets to the desktop. On the other hand, when the hype is that applets are back, who am i to judge?
  • I was almost hoping that the video support would address the number one wish i had for desktop Java in 2008 – cross-platform support for H.264 and FLV. We’re still not there yet – the cross-platform codecs are rather unknown in the general desktop area (one from On2, and another from the Open Media Commons project that has yet to deliver any binaries), and H.264 and FLV will only be supported when native codes are installed.
  • And no, those were not 200 different video streams mapped on the rotating cube. Those were 200 different views on a handful of different video streams. Still impressive.
  • The best presentation that i have attended did not use a single slide from Sun’s template. Those of you who are familiar with work of Garr Reynolds and Nancy Duarte should already know the answer to “why?”, and Ben Galbraith’s reputation has apparently allowed him to swerve past Sun’s lawyers and copywriters to present a very strong, clean and focused talk on user and interaction design.
  • And while we’re at it – do we really have to ruin every single session title and slide that use the word Java? I think we can figure out if Java is Java™ technology, Java™ platform or Java™ programming language by ourselves . At least they didn’t turn “Effective Java” into “Effective Java™ Programming Language”…
  • Literally bending and picking ugly things off the stage, having dozens of people come and go, showing IDE screens with 50+ lines of code, demoes freezing on the most important day of the year. Makes one wonder why Steve Jobs’ presentations get so much hyped before, during and after…

Here are some Swing links that you might have missed during this week:

Here are some Swing links that you might have missed during this week:

  • Richard Kennard has announced release 0.43 of his Metawidget project. Geertjan Wielenga picks this up on the DZone, and Dieter Krachtus has engaged in an architectural discussion on the project. Richard also shows how Metawidget can emit JIDE components.
  • Jan Erik Paulsen vents his frustration with some of the Swing pain points, including layout managers, audio / video support and JavaFX design tools vision. Over the past year Jan Erik had a number of very interesting projects, including Capture, Photoshop Express and Amanda, and it looks like the topics above have hindered the progress of these projects to some degree.
  • Eugene Toporov announces release 1.0 of commercial JxBrowser library for embedding Mozilla Firefox browser into AWT / Swing applications.
  • Ingo Maier announces release 0.1 of scala.swing, an event based library for building Swing applications in Scala.
  • Jacek Furmankiewicz continues his explorations of Java builders for Swing layouts, and it looks like this approach strikes a chord with his readers (see followup by Andres Almiray).
  • Continuing the trend of Swing as a “UI virtual machine” for JVM-based dynamic languages, Greg Trasuk experiments with project JyMatisse that allows using Jython as the backend for Matisse-generated forms.
  • And finally, Christophe Le Besnerais has published a Swing component for cropping images. The ability to install a custom filter (illustrated by grayscaling and blurring the outside of the cropped area) is especially impressive, and my only concern is using JLayeredPane as a base class. Perhaps using JPanel with OverlayLayout can be a simpler solution?